5.13. Встроенные функции в Rust
Встроенные функции в Rust
Rust предоставляет набор встроенных макросов и функций стандартной библиотеки, доступных без дополнительных импортов в большинстве контекстов. Эти инструменты образуют основу повседневной разработки.
Встроенные макросы
| Макрос | Назначение | Пример |
|---|---|---|
println! | Вывод текста в стандартный поток вывода с переводом строки | |
print! | Вывод текста в стандартный поток вывода без перевода строки | |
eprintln! | Вывод текста в стандартный поток ошибок с переводом строки | |
eprint! | Вывод текста в стандартный поток ошибок без перевода строки | |
format! | Форматирование строки без вывода, возвращает String | |
panic! | Немедленное прерывание выполнения программы с сообщением | |
vec! | Создание вектора с заданными элементами | |
dbg! | Отладочная печать значения с указанием файла и строки | |
todo! | Заглушка для нереализованного функционала, вызывает панику | |
unimplemented! | Заглушка для нереализованного метода, вызывает панику | |
assert! | Проверка условия в режиме отладки, паника при ложном результате | |
assert_eq! | Проверка равенства двух значений с детальным сообщением | |
assert_ne! | Проверка неравенства двух значений | |
debug_assert! | Проверка условия только в режиме отладки (оптимизируется в релизе) | |
debug_assert_eq! | Проверка равенства только в режиме отладки | |
debug_assert_ne! | Проверка неравенства только в режиме отладки | |
write! | Запись отформатированного текста в реализацию std::fmt::Write | |
writeln! | Запись отформатированного текста с переводом строки | |
concat! | Объединение строковых литералов на этапе компиляции | |
env! | Получение значения переменной окружения на этапе компиляции | |
option_env! | Безопасное получение переменной окружения, возвращает Option | |
include_str! | Встраивание содержимого файла как строкового литерала | |
include_bytes! | Встраивание содержимого файла как байтового массива | |
line! | Получение номера текущей строки на этапе компиляции | |
file! | Получение имени текущего файла на этапе компиляции | |
column! | Получение номера текущей колонки на этапе компиляции | |
stringify! | Преобразование токена в строковый литерал на этапе компиляции | |
module_path! | Получение полного пути к текущему модулю |
Функции стандартной библиотеки высокой частоты использования
| Функция | Назначение |
|---|---|
std::process::exit | Завершение процесса с указанным кодом возврата |
std::mem::drop | Явное освобождение владения значением |
std::mem::size_of | Получение размера типа в байтах на этапе компиляции |
std::mem::size_of_val | Получение размера значения в байтах во время выполнения |
std::mem::take | Замена значения по изменяемой ссылке на значение по умолчанию с возвратом старого |
std::mem::replace | Замена значения по изменяемой ссылке с возвратом старого |
std::ptr::null | Создание нулевого указателя для любого типа |
std::ptr::null_mut | Создание нулевого изменяемого указателя |
std::env::args | Получение аргументов командной строки как итератора |
std::env::var | Получение значения переменной окружения |
std::fs::read | Чтение всего содержимого файла в вектор байт |
std::fs::write | Запись данных в файл |
std::thread::sleep | Приостановка выполнения потока на заданную длительность |
std::thread::spawn | Создание нового потока выполнения |
std::time::Instant::now | Получение текущей точки во времени для замеров |
Методы-помощники для стандартных типов
| Метод | Назначение |
|---|---|
is_empty | Проверка коллекции на отсутствие элементов |
len | Получение количества элементов в коллекции |
unwrap | Извлечение значения из Option или Result, паника при ошибке |
expect | Извлечение значения с пользовательским сообщением паники |
unwrap_or | Извлечение значения или возврат значения по умолчанию |
unwrap_or_else | Извлечение значения или вычисление значения по умолчанию |
map | Преобразование значения внутри Option или Result |
and_then | Цепочка операций, возвращающих Option или Result |
as_ref | Преобразование Option<T> в Option<&T> без перемещения |
as_mut | Преобразование Option<T> в Option<&mut T> |
Функции для работы с памятью и указателями
| Функция | Назначение |
|---|---|
std::alloc::alloc | Выделение сырой памяти через системный аллокатор |
std::alloc::dealloc | Освобождение сырой памяти |
std::ptr::read | Безопасное чтение значения по указателю без перемещения |
std::ptr::write | Запись значения по указателю без дропа предыдущего |
std::ptr::copy | Копирование памяти с перекрытием областей |
std::ptr::copy_nonoverlapping | Копирование памяти без перекрытия |
Box::new | Выделение значения в куче с автоматическим освобождением |
Box::into_raw | Преобразование Box в сырой указатель |
Box::from_raw | Восстановление Box из сырого указателя |
Функции для работы с файловой системой
| Функция | Назначение |
|---|---|
std::fs::read | Чтение всего содержимого файла в Vec<u8> |
std::fs::read_to_string | Чтение текстового файла в String |
std::fs::write | Запись данных в файл, перезаписывая существующий |
std::fs::create_dir | Создание директории |
std::fs::create_dir_all | Рекурсивное создание директории со всеми родителями |
std::fs::remove_file | Удаление файла |
std::fs::remove_dir | Удаление пустой директории |
std::fs::remove_dir_all | Рекурсивное удаление директории со всем содержимым |
std::fs::metadata | Получение метаданных файла или директории |
std::fs::canonicalize | Получение абсолютного пути с разрешением символических ссылок |
Функции для работы с сетью
| Функция | Назначение |
|---|---|
std::net::TcpStream::connect | Установка TCP-соединения к удалённому хосту |
std::net::TcpListener::bind | Привязка TCP-сервера к локальному адресу |
std::net::UdpSocket::bind | Привязка UDP-сокета к адресу |
std::net::IpAddr::from | Создание IP-адреса из различных представлений |
std::net::SocketAddr::new | Создание сокетного адреса из IP и порта |
Функции для работы со временем
| Функция | Назначение |
|---|---|
std::time::Instant::now | Получение текущей точки времени для замеров производительности |
std::time::SystemTime::now | Получение системного времени в формате UNIX |
std::time::Duration::from_secs | Создание длительности из секунд |
std::time::Duration::from_millis | Создание длительности из миллисекунд |
std::time::Duration::from_micros | Создание длительности из микросекунд |
std::time::Duration::from_nanos | Создание длительности из наносекунд |
Макросы для тестирования и атрибуты
| Макрос / Атрибут | Назначение |
|---|---|
#[test] | Пометка функции как теста для cargo test |
#[should_panic] | Ожидание паники при выполнении теста |
#[ignore] | Пропуск теста при обычном запуске |
compile_error! | Генерация ошибки компиляции с сообщением |
unreachable! | Указание недостижимого кода, вызывает панику при выполнении |
Функции для работы с итераторами и коллекциями
| Функция / Метод | Назначение |
|---|---|
collect | Сбор элементов итератора в коллекцию |
map | Преобразование каждого элемента итератора |
filter | Отбор элементов по предикату |
fold | Свёртка итератора в одно значение |
zip | Объединение двух итераторов в пары |
enumerate | Добавление индекса к каждому элементу |
chain | Последовательное объединение двух итераторов |